

# 关联装饰器
def relation(func):  # func=input

    def wrapper(*args, **kwargs):  # args: (self, id=search_key, {order_sn}, {pay_pwd})
        # 被修饰函数执行前, 实现的功能: 在输入数据前, 对关联数据进行替换操作
        args = list(args)
        for key in args[0].relations:
            for i in range(1, len(args)):  # 循环下标为1及之后的所有实参数据, 逐一进行替换操作
                args[i] = args[i].replace('{' + key + '}', str(args[0].relations.get(key)))
        # args: [self, id=search_key, 1567979879465497, 123456]
        res = func(*args, **kwargs)  # input(self, id=search_key, 1567979879465497, 123456)
        # 被修饰函数执行后, 实现的功能
        return res

    return wrapper